
package beanView;

import Controlador.Conexion;
import Modelos.*;
import java.io.Serializable;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

@ManagedBean
@ViewScoped
public class beanDatos implements Serializable{
    private String Cedula="";
    private String Nombre1="";
    private String Nombre2="";
    private String Apellido1="";
    private String Apellido2="";
    private String Sexo="";
    private Date FechaNacimiento;
    private SelectItem[] TipoTitulo= {new SelectItem("P", "Pregrado"),new SelectItem("E", "Especialización"),new SelectItem("M", "Maestría"),new SelectItem("D", "Doctorado")};
    private SelectItem[] SexoSL={new SelectItem("M", "Masculino"),new SelectItem("F", "Femenino")};
    private SelectItem[] TipoExperiencia={new SelectItem("DU", "Docente Universitario"),new SelectItem("IV", "Investigación"),new SelectItem("DA", "Dirección Académica"),new SelectItem("PR", "Profesional")};
    private SelectItem[] TipoPonencia= {new SelectItem("N", "Nacional"), new SelectItem("I", "Internacional")};
    private SelectItem[] Activo= {new SelectItem("S", "Si"), new SelectItem("N", "No")};
    private SelectItem[] TipoVinculacion= {new SelectItem("MT", "Medio Tiempo"), new SelectItem("TC", "Tiempo Completo")};
    private SelectItem[] TipoEscalafon= {new SelectItem("Asistente", "Asistente"), new SelectItem("Asociado", "Asociado"), new SelectItem("Titular", "Titular"), new SelectItem("Auxiliar", "Auxiliar")};
    private SelectItem[] Escuelas;
    private String PaisCed="";
    private String DepartamentoCed="";
    private String CiudadCed="";
    private String PaisNac="";
    private String DepartamentoNac="";
    private String CiudadNac="";
    private String PaisRes="";
    private String DepartamentoRes="";
    private String CiudadRes="";
    private String Direccion="";
    private String Celular="";
    private String Telefono="";
    private String Email="";
    private String Ip, Port;
    private List<FormacionAcademica> FAS = new ArrayList<FormacionAcademica>();
    private List<Experiencia> EXS = new ArrayList<Experiencia>();
    private List<Ponencia> PS = new ArrayList<Ponencia>();
    private List<Libro> LS = new ArrayList<Libro>();
    private List<Articulos> AS = new ArrayList<Articulos>();
    private List<Catedratico> CS = new ArrayList<Catedratico>();
    private List<Ocasional> OS = new ArrayList<Ocasional>();
    private List<Planta> PLS = new ArrayList<Planta>();
    
    
    public beanDatos() {
        Ip = "127.0.0.1";
        Port = "1521";
        PaisCed = "057";
        DepartamentoCed = "91";
        PaisNac = "057";
        DepartamentoNac = "91";
        PaisRes = "057";
        DepartamentoRes = "91";
        Escuelas = retornaescuelas();
        ////////////////////////
//        Cedula="1121862665";
//        Nombre1 = "Braejan";
//        Nombre2 ="David";
//        Apellido1 = "Arias";
//        Apellido2 = "Heregua";
//        Direccion = "CL 25B No. 20-57";
//        Celular="3125432588";
//        Telefono = "6837648";
    }
    
    ////////////////////////////////////////////////////////////////////////////
    //                                 FUNCIONES                              //
    ////////////////////////////////////////////////////////////////////////////
    
    private void limpiartodo() {
        FAS = new ArrayList<FormacionAcademica>();
        EXS = new ArrayList<Experiencia>();
        PS = new ArrayList<Ponencia>();
        LS = new ArrayList<Libro>();
        AS = new ArrayList<Articulos>();
        CS = new ArrayList<Catedratico>();
        OS = new ArrayList<Ocasional>();
        PLS = new ArrayList<Planta>();
        PaisCed = "057";
        DepartamentoCed = "91";
        PaisNac = "057";
        DepartamentoNac = "91";
        PaisRes = "057";
        DepartamentoRes = "91";
        Cedula=Nombre1=Nombre2=Apellido1=Apellido2=Sexo=Direccion=Celular=Telefono="";
        FechaNacimiento = new Date();
    }
      
    public boolean faltandatos(){
        boolean retorno = true;
        if(!Cedula.isEmpty() && !Nombre1.isEmpty() && !Apellido1.isEmpty() && ! Sexo.isEmpty() && !Celular.isEmpty())
            retorno = false;
        return retorno;
    }
    private SelectItem[] retornapaises(){
        SelectItem[] retorno  = null;
        Conexion c = new Conexion(this.Ip,this.Port);
//        Conexion c = new Conexion();
        ResultSet Resultado = c.getQuery("select id_pais,nombre from BDADpaises order by nombre");
        try {
            retorno = new SelectItem[c.getRowCount(Resultado)];
            int i=0;
            while(Resultado.next()){
                retorno[i] = new SelectItem(Resultado.getString(1), Resultado.getString(2));
                i++;
            }
            c.Close();
        } catch (Exception e) { System.out.println("Error: "+e.getMessage());
        }
        return retorno;
    }
    
    private SelectItem[] retornadepartamentos(String Pais){
        SelectItem[] retorno = null;
        Conexion c = new Conexion(this.Ip,this.Port);
//        Conexion c = new Conexion();
        ResultSet Resultado = c.getQuery("SELECT id_dpto,nombre FROM   BDADdepartamentos where id_pais="+Pais+" order by nombre");
        try {
            retorno = new SelectItem[c.getRowCount(Resultado)];
            int i = 0;
            while (Resultado.next()) {
                retorno[i] = new SelectItem(Resultado.getString(1), Resultado.getString(2));
                i++;
            }
            c.Close();
        } catch (Exception e) {
            System.out.println("Error: "+e.getMessage());
        }
        return retorno;
    }
    
    private SelectItem[] retornaciudades (String Pais, String Departamento){
         SelectItem[] retorno = null;
         Conexion c = new Conexion(this.Ip,this.Port);
//         Conexion c = new Conexion();
        ResultSet Resultado = c.getQuery("SELECT id_ciudad, nombre FROM BDADciudades where id_pais="+Pais+" and id_dpto="+Departamento+" order by nombre");
        try {
            retorno = new SelectItem[c.getRowCount(Resultado)];
            int i = 0;
            while (Resultado.next()) {
                retorno[i] = new SelectItem(Resultado.getString(1), Resultado.getString(2));
                i++;
            }
            c.Close();
        } catch (Exception e) {
            System.out.println("Error: "+e.getMessage());
        }
         return retorno;
    }
    
    private SelectItem[] retornaescuelas(){
        SelectItem[] retorno = null;
        Conexion c = new Conexion(this.Ip,this.Port);
//        Conexion c = new Conexion();
        ResultSet Resultado = c.getQuery("SELECT idEscuela,nombre FROM BDADescuelas order by Nombre");
        try {
            retorno = new SelectItem[c.getRowCount(Resultado)];
            int i = 0;
            while (Resultado.next()) {
                retorno[i] = new SelectItem(Resultado.getString(1), Resultado.getString(2));
                i++;
            }
            c.Close();
        } catch (Exception e) {
            System.out.println("Error: "+e.getMessage());
        }
        return retorno;
    }
    
    // <editor-fold defaultstate="collapsed" desc="Funciones cargas de paises, departamentos y ciudades">  
    public SelectItem[] initpaisesced() {
        return retornapaises();
    }

    public SelectItem[] initdepartamentosced() {
        return retornadepartamentos(PaisCed);
    }

    public SelectItem[] initciudadesced() {
        return retornaciudades(PaisCed, DepartamentoCed);
    }
    
    public SelectItem[] initpaisesnac() {
        return retornapaises();
    }

    public SelectItem[] initdepartamentosnac() {
        return retornadepartamentos(PaisNac);
    }

    public SelectItem[] initciudadesnac() {
        return retornaciudades(PaisNac, DepartamentoNac);
    }
    
    public SelectItem[] initpaisesres() {
        return retornapaises();
    }

    public SelectItem[] initdepartamentosres() {
        return retornadepartamentos(PaisRes);
    }

    public SelectItem[] initciudadesres() {
        return retornaciudades(PaisNac, DepartamentoRes);
    }
    //</editor-fold>
    ////////////////////////////////////////////////////////////////////////////

    
    
    ////////////////////////////////////////////////////////////////////////////
    //                            GETTER Y SETTER                             //
    ////////////////////////////////////////////////////////////////////////////
     
    // <editor-fold defaultstate="collapsed" desc="Getter Y Setter">  
    
    
    public SelectItem[] getTipoVinculacion() {
        return TipoVinculacion;
    }

    public String getEmail() {
        return Email;
    }

    public void setEmail(String Email) {
        this.Email = Email;
    }
    
    public SelectItem[] getTipoEscalafon() {
        return TipoEscalafon;
    }
    
    public List<Planta> getPLS() {
        return PLS;
    }

    public void setPLS(List<Planta> PLS) {
        this.PLS = PLS;
    }
    
    public List<Ocasional> getOS() {
        return OS;
    }

    public void setOS(List<Ocasional> OS) {
        this.OS = OS;
    }
        
    public SelectItem[] getActivo() {
        return Activo;
    }

    public void setActivo(SelectItem[] Activo) {
        this.Activo = Activo;
    }
        
    public SelectItem[] getEscuelas() {
        return Escuelas;
    }

    public void setEscuelas(SelectItem[] Escuelas) {
        this.Escuelas = Escuelas;
    }
        
    public List<Catedratico> getCS() {
        return CS;
    }

    public void setCS(List<Catedratico> CS) {
        this.CS = CS;
    }
        
    public List<Articulos> getAS() {
        return AS;
    }

    public void setAS(List<Articulos> AS) {
        this.AS = AS;
    }    
    
    public List<Libro> getLS() {
        return LS;
    }

    public void setLS(List<Libro> LS) {
        this.LS = LS;
    }
    
    public List<Ponencia> getPS() {
        return PS;
    }

    public void setPS(List<Ponencia> PS) {
        this.PS = PS;
    }
        
    public List<Experiencia> getEXS() {
        return EXS;
    }

    public void setEXS(List<Experiencia> EXS) {
        this.EXS = EXS;
    }
    
    public List<FormacionAcademica> getFAS() {
        return FAS;
    }

    public void setFAS(List<FormacionAcademica> FAS) {
        this.FAS = FAS;
    }
        
    public String getCelular() {
        return Celular;
    }

    public void setCelular(String Celular) {
        this.Celular = Celular;
    }

    public String getDireccion() {
        return Direccion;
    }

    public void setDireccion(String Direccion) {
        this.Direccion = Direccion;
    }

    public String getTelefono() {
        return Telefono;
    }

    public void setTelefono(String Telefono) {
        this.Telefono = Telefono;
    }
    
    public Date getFechaNacimiento() {
        return FechaNacimiento;
    }

    public void setFechaNacimiento(Date FechaNacimiento) {
        this.FechaNacimiento = FechaNacimiento;
    }
    
    public String getCiudadRes() {
        return CiudadRes;
    }

    public void setCiudadRes(String CiudadRes) {
        this.CiudadRes = CiudadRes;
    }

    public String getDepartamentoRes() {
        return DepartamentoRes;
    }

    public void setDepartamentoRes(String DepartamentoRes) {
        this.DepartamentoRes = DepartamentoRes;
    }

    public String getPaisRes() {
        return PaisRes;
    }

    public void setPaisRes(String PaisRes) {
        this.PaisRes = PaisRes;
    }
    
    public String getCiudadNac() {
        return CiudadNac;
    }

    public void setCiudadNac(String CiudadNac) {
        this.CiudadNac = CiudadNac;
    }

    public String getDepartamentoNac() {
        return DepartamentoNac;
    }

    public void setDepartamentoNac(String DepartamentoNac) {
        this.DepartamentoNac = DepartamentoNac;
    }

    public String getPaisNac() {
        return PaisNac;
    }

    public void setPaisNac(String PaisNac) {
        this.PaisNac = PaisNac;
    }
    
    public SelectItem[] getTipoTitulo() {
        return TipoTitulo;
    }

    public SelectItem[] getSexoSL() {
        return SexoSL;
    }
    
    public SelectItem[] getTipoExperiencia() {
        return TipoExperiencia;
    }

    public SelectItem[] getTipoPonencia() {
        return TipoPonencia;
    }
    
      public String getCiudadCed() {
        return CiudadCed;
    }

    public void setCiudadCed(String CiudadCed) {
        this.CiudadCed = CiudadCed;
    }

    public String getDepartamentoCed() {
        return DepartamentoCed;
    }

    public void setDepartamentoCed(String DepartamentoCed) {
        this.DepartamentoCed = DepartamentoCed;
    }

    public String getPaisCed() {
        return PaisCed;
    }

    public void setPaisCed(String PaisCed) {
        this.PaisCed = PaisCed;
    }
    public String getSexo() {
        return Sexo;
    }

    public void setSexo(String Sexo) {
        this.Sexo = Sexo;
    }
    
    public String getCedula() {
        return Cedula;
    }

    public void setCedula(String Cedula) {
        this.Cedula = Cedula;
    }

    public String getApellido1() {
        return Apellido1;
    }

    public void setApellido1(String Apellido1) {
        this.Apellido1 = Apellido1;
    }

    public String getApellido2() {
        return Apellido2;
    }

    public void setApellido2(String Apellido2) {
        this.Apellido2 = Apellido2;
    }

    public String getNombre1() {
        return Nombre1;
    }

    public void setNombre1(String Nombre1) {
        this.Nombre1 = Nombre1;
    }

    public String getNombre2() {
        return Nombre2;
    }

    public void setNombre2(String Nombre2) {
        this.Nombre2 = Nombre2;
    }
    //</editor-fold>
    
    ////////////////////////////////////////////////////////////////////////////
    
    ///                 Guardar Datos en la Base de Datos
    
    
}

